﻿CREATE PROC dbo.spGuardaPaquete
	@pnIdLaboratorio	INT,
	@pnIdPaquete		INT,
	@psNomPaquete		VARCHAR(250),
	@pnPrecio			DECIMAL(18,2),
	@psListaEstudios	VARCHAR(MAX),
	@psIpMod			VARCHAR(15),
	@pnIdUsuarioMod		INT
AS
BEGIN
	SET NOCOUNT ON;
	DECLARE @nIdXml		INT
	DECLARE @tblRegistros TABLE (Indice INT IDENTITY(1,1), IdEstudio INT)
	
	IF ISNULL(@psListaEstudios,'') <> ''
	BEGIN 
		exec dbo.sp_xml_preparedocument @nIdXml OUTPUT, @psListaEstudios

		INSERT INTO @tblRegistros (IdEstudio)
		SELECT Value
		FROM OPENXML (@nIdXml, '/Items/Item', 3)
		WITH (Value INT)

		EXEC dbo.sp_xml_removedocument @nIdXml
	END
	
	IF NOT EXISTS(SELECT 1 FROM @tblRegistros)
		RAISERROR('Debe agregar estudios al paquete',16,1)

	IF @pnIdPaquete IS NULL
	BEGIN
		SELECT @pnIdPaquete = ISNULL(MAX(IdPaquete),0) + 1 FROM dbo.PaqueteEstudio WHERE IdLaboratorio = @pnIdLaboratorio
		INSERT INTO dbo.PaqueteEstudio
				( IdLaboratorio ,
				  IdPaquete ,
				  Descripcion ,
				  Precio ,
				  FechaMod ,
				  IpMod ,
				  IdUsuarioMod
				)
		SELECT	@pnIdLaboratorio,
				@pnIdPaquete,
				@psNomPaquete,
				@pnPrecio,
				GETDATE(),
				@psIpMod,
				@pnIdUsuarioMod
	END
	ELSE
	BEGIN
		UPDATE	dbo.PaqueteEstudio
		SET		Descripcion = @psNomPaquete,
				Precio = @pnPrecio,
				FechaMod	= GETDATE(),
				IpMod		= @psIpMod,
				IdUsuarioMod= @pnIdUsuarioMod
		WHERE	IdLaboratorio=@pnIdLaboratorio
		AND		IdPaquete	= @pnIdPaquete		
	END
	
	DELETE FROM dbo.PaqueteEstudioDet WHERE IdLaboratorio = @pnIdLaboratorio AND IdPaquete = @pnIdPaquete
	INSERT INTO dbo.PaqueteEstudioDet
	        ( IdPaquete ,
	          IdLaboratorio ,
	          IdEstudio ,
	          FechaMod ,
	          IpMod ,
	          IdUsuarioMod
	        )
	SELECT	@pnIdPaquete,
			@pnIdLaboratorio,
			IdEstudio,
			GETDATE(),
			@psIpMod,
			@pnIdUsuarioMod
	FROM	@tblRegistros
	
	SELECT @pnIdPaquete IdPaquete
	
	SET NOCOUNT OFF;
END